package cn.sc.summer.constant.util;

import cn.hutool.core.util.ObjectUtil;

import java.util.Arrays;
import java.util.concurrent.atomic.AtomicReference;

/**
 * 类名：格式化工具类
 *
 * @author a-xin
 * @date 2024/1/22 15:30
 */
public class FormatUtil {

    /**
     * 日志类型打印格式化字符串
     *
     * @param pattern 需要替换的字符串信息，{}为替换符号
     * @param args    需要替换的参数信息
     * @return 替换完成的字符串信息
     */
    public static String formatLogStr(String pattern, Object... args) {
        if (ObjectUtil.isNull(args)) {
            return pattern;
        }
        AtomicReference<String> result = new AtomicReference<>(pattern);
        Arrays.stream(args).forEach(arg -> result.set(result.get().replaceFirst("\\{}", arg.toString())));
        return result.get();
    }

    /**
     * 格式化字符串
     *
     * @param sign    需要替换的字符串，需要转义
     * @param pattern 需要替换的字符串信息
     * @param args    需要替换的参数信息
     * @return 替换完成的字符串信息
     */
    public static String formatStr(String sign, String pattern, Object... args) {
        if (ObjectUtil.isNull(args)) {
            return pattern;
        }
        AtomicReference<String> result = new AtomicReference<>(pattern);
        Arrays.stream(args).forEach(arg -> result.set(result.get().replaceFirst(sign, arg.toString())));
        return result.get();
    }

}
